package com.iris.live.services.services;

import com.iris.live.services.data.models.Lsh导入名单Model;
import com.iris.live.services.data.models.顾客记录汇总Model;
import com.iris.live.services.data.models.顾客进店记录表Model;
import com.iris.live.services.models.RequestBase;
import com.iris.live.services.models.ResultData;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * Created by lusong on 2016/10/31.
 */
public interface CustomerInfoService {
    /**
     * 获取销售顾问名下的客户信息
     * @param permit
     * @param scCode
     * @return
     */
    public List getCustomerInfoes(String permit, String scCode);

    /**
     * 获取销售顾问名下的客户信息(带客户姓名筛选条件 )
     * @param cust
     * @return
     */
    public List getCustomers(CustomerInfoService.customersRequest cust);


    /**
     * 判断销售顾问是否有关联客户信息
     * @param account
     * @return
     */
    public ResultData hasCustomers(String account);

    /**
     * 批量新增导入名单表
     *
     * @param list
     * @return 成功保存成功条数
     */
    public int insertLeadingList(List<Lsh导入名单Model> list);

    /**
     * 批量新增顾客记录汇总
     *
     * @param list
     * @return 成功保存条数, 已存在数据条数
     */
    public String insertCustomerCollect(List<顾客记录汇总Model> list);

    /**
     * 批量新增顾客订单记录
     *
     * @param list
     * @return 成功保存条数 不存在数据条数
     */
    public String insertCustomerOrders(List<GetCustomerOrdersRequest> list);

    /**
     * 批量新增顾客进店记录
     *
     * @param list
     * @return 成功保存条数
     */
    String insertCustomerShop(HttpServletRequest request,List<顾客进店记录表Model> list);

    /**
     * 客户变更
     * @param customerIds
     * @param assignAccounts
     * @return
     */
    public ResultData changeCustomers(String ownerAccount, String customerIds, String assignAccounts);

    ResultData dataMoveLeaningInListOverWrite(String permit, List<Map> list) throws Exception;

    ResultData dataMoveCusRecordPoolOverWrite(String permit, List<Map> list) throws Exception;

    ResultData dataMoveCusIntoTheStoreAndTestDriveOverWrite(String permit, List<Map> list) throws Exception;

    ResultData getILogTransferState(String permit);

    ResultData saveILogTransferState(String permit, String state);

    ResultData getScMateResult(List<Map<String, String>> list, String permit);

    static class GetCustomerOrdersRequest extends RequestBase {
        public String 订单编号;
        public String 许可;
        public String 顾客编号;
        public String 车型;
        public String 销售顾问;
        public String 订单日期;
        public String 交车日期;
        public String 状态;
        public String 渠道;
        public String 订单类型;
        public String 再购进店日期;
        public String 库存编号;
        public String 更新账号;
        public String 更新时间;
        public String 电话号码;
    }

    static class GetLeaningInList extends Object {
        public String 顾客姓名;
        public String 电话号码;
        public String 车型;
        public String 名单类型;
        public String 线索名称;
        public String 导入日期;
        public String 是否已联系;
        public String 联系人;
        public String 联系日期;
        public String 销售顾问;
        public String 信息渠道;
        public String 意向级别;
        public String 预约进店日期;
        public String 预约进店时间;
        public String 意向客户状态;
        public String 备注;
        public String 战败原因;
        public String 备用1;
        public String 备用2;
    }

    static class GetCusRecordPool {
        public String 顾客编号;
        public String 顾客姓名;
        public String 电话号码;
        public String 销售顾问;
        public String 顾客性别;
        public String 留档日期;
        public String 休眠日期;
        public String 意向车型;
        public String 意向车系;
        public String 顾客来源;
        public String 顾客渠道;
        public String 保有车品牌;
        public String 试乘试驾;
        public String 报价;
        public String 订单;
        public String 交车;
        public String 原顾客级别;
        public String 上次进店日期;
        public String 上次进店编号;
        public String 上次进店目的;
        public String 试驾车型;
        public String 试驾日期;
        public String 报价车型;
        public String 报价日期;
        public String 订单日期;
        public String 订单车型;
        public String 订单车系;
        public String 成交日期;
        public String 新顾客级别;
        public String 上次订单编号;
        public String 再购进店日期;
        public String 顾客状态;
        public String 备用1;
        public String 备用2;
    }

    static class GetCusIntoTheStoreAndTestDrive {
        public String 经销店;
        public String 销售顾问;
        public String 顾客姓名;
        public String 电话号码;
        public String 是否首次到店;
        public String 是否预约;
        public String 是否指定销售顾问;
        public String 到店时间;
        public String 离店时间;
        public String 停留时间;
        public String 试驾开始时间;
        public String 试驾结束时间;
        public String 试驾时长;
        public String 试驾车型;
        public String 偏好车型;
        public String 现有车型;
        public String 客户级别;
        public String 线索来源;
        public String 信息渠道;
        public String 是否报价;
        public String 是否订单;
        public String 是否交车;
        public String 到店目的;
        public String 主动集客活动备注;
        public String 是否来电;
        public String 进店编号;
        public String 进店日期;
    }

    static class customersRequest{
        public String scCode;
        public String custName;
        public String permit;
    }
}
